package com.shujia.mr.hw.filter1;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;


/**
 * 需求：
 *      读取学生基本信息以及学生总分数据，对学生信息和总分关联并过滤出总分大于450同学
 *
 * Map阶段：
 *      1.在Map阶段读取学生基本信息和学生总分信息
 *      2.对信息做切分，并且对数据进行判断打标记
 *      3.对数据写出
 * Reduce阶段：
 *      1.将相同的学生ID聚合到一起
 *      2.对Value进行循环遍历，根据标记信息将数据提取出来
 *      3.对结果进行判断过滤
 *      4.将过滤后的结果写出
 *
 */
public class MyFilter1Mapper extends Mapper<LongWritable, Text,Text,Text> {
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context) throws IOException, InterruptedException {
        // 读取到一行数据，即可能是学生基本信息也可能是学生的总分
        String oneLine = value.toString();
        String[] split = oneLine.split(",");
        if (split.length == 1){
            // 总分数据
            String IDAndScore = split[0];
            String[] IDAndScoreIndex = IDAndScore.split("\t");
            context.write(new Text(IDAndScoreIndex[0]),new Text(IDAndScoreIndex[1]));
        }else{
            // 基本信息
            context.write(new Text(split[0]),new Text(split[1]+","+split[2]+","+split[3]+","+split[4]));
        }
    }
}
